package are.web;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class SrvUsuarios
 */
@WebServlet("/SrvTotalizador")
public class SrvTotalizador extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SrvTotalizador() {
        super();
        // TODO Auto-generated constructor stub
    }

    
	protected void ProcesarPeticion(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html;charset=ISO-8859-1");
		PrintWriter out = response.getWriter();

		String operacion = (String) request.getParameter("operacion");
		db conexion = null;

		/* Inicio operacion Agregar Usuario */

		if (operacion.equals("add")) {
			try {
				conexion = new db();
				String transformador = (String) request
						.getParameter("transformador");
				String nic = (String) request.getParameter("nic");
				String medidor = (String) request.getParameter("medidor");
				String marca = (String) request.getParameter("marca");
				String nis_rad = (String) request.getParameter("nis_rad");
				String tipo = (String) request.getParameter("tipo");
				String recurso = "-1";
				if (request.getParameter("imei") != null) {
					String imei = (String) request.getParameter("imei");
					ManejadorDispositivos DM = new ManejadorDispositivos(
							conexion);
					if (DM.Find(imei)) {
						recurso = DM.getDispositivo().getRecurso();
					}

				} else {
					if (request.getParameter("recurso") != null) {
						recurso = (String) request.getParameter("recurso");
					}
				}
				String latitud = (String) request.getParameter("latitud");
				String longitud = (String) request.getParameter("longitud");

				Totalizador totalizador = new Totalizador();
				totalizador.setTransformador(transformador);
				totalizador.setNic(nic);
				totalizador.setMedidor(medidor);
				totalizador.setMarca(marca);
				totalizador.setNis_rad(nis_rad);
				totalizador.setTipo(tipo);
				totalizador.setRecurso(recurso);
				totalizador.setLatitud(latitud);
				totalizador.setLongitud(longitud);

				ManejadorTotalizador MT = new ManejadorTotalizador(conexion,
						totalizador);
				if (!MT.existNic(totalizador.getNic())) {
					if (MT.add()) {
						out.print("OK");
					} else {
						out.print("Error al procesar la solicitud");
					}

				} else {
					out.print("El NIC ingresado ya tiene asignado un totalizador: "
							+ totalizador.getNic());
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print("Error de conexion con el servidor: "
						+ e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}

		}

		if (operacion.equals("modify")) {

			try {
				conexion = new db();

				String transformador = (String) request
						.getParameter("transformador");
				String nic = (String) request.getParameter("nic");
				String medidor = (String) request.getParameter("medidor");
				String marca = (String) request.getParameter("marca");
				String nis_rad = (String) request.getParameter("nis_rad");
				String tipo = (String) request.getParameter("tipo");
				String recurso = "-1";
				if (request.getParameter("imei") != null) {
					String imei = (String) request.getParameter("imei");
					ManejadorDispositivos DM = new ManejadorDispositivos(
							conexion);
					if (DM.Find(imei)) {
						recurso = DM.getDispositivo().getRecurso();
					}

				} else {
					if (request.getParameter("recurso") != null) {
						recurso = (String) request.getParameter("recurso");
					}
				}
				String latitud = (String) request.getParameter("latitud");
				String longitud = (String) request.getParameter("longitud");
				String key = (String) request.getParameter("key");

				Totalizador totalizador = new Totalizador();
				totalizador.setTransformador(transformador);
				totalizador.setNic(nic);
				totalizador.setMedidor(medidor);
				totalizador.setMarca(marca);
				totalizador.setNis_rad(nis_rad);
				totalizador.setTipo(tipo);
				totalizador.setRecurso(recurso);
				totalizador.setLatitud(latitud);
				totalizador.setLongitud(longitud);

				ManejadorTotalizador MT = new ManejadorTotalizador(conexion,
						totalizador);
				if (MT.existId(key)) {
					if (MT.update(key)) {
						out.print("OK");
					} else {
						out.print("Error al procesar la solicitud");
					}

				} else {
					out.print("ID Totalizador no existe: " + key);
				}

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print("Error de conexion con el servidor: "
						+ e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}

		}

		if (operacion.equals("list")) {
			try {
				conexion = new db();
				ManejadorTotalizador MT = new ManejadorTotalizador(conexion);
				ArrayList<Totalizador> totalizadores = MT.list();

				out.println("<h2>Listado Totalizadores</h2>");
				out.println("<table>");
				out.println("<tr>");
				out.println("<th>Codigo BDI</th>");
				out.println("<th>NIC</th>");
				out.println("<th>Medidor</th>");
				out.println("<th>Marca</th>");
				out.println("<th>NIS_RAD</th>");
				out.println("<th>Latitud</th>");
				out.println("<th>Longitud</th>");
				out.println("<th>Accion</th>");
				out.println("</tr>");
				int fila = 1;
				for (Totalizador totalizador : totalizadores) {
					out.println("<tr " + (fila % 2 == 0 ? "class='odd'" : "")
							+ ">");
					out.println("<td>" + totalizador.getTransformador()
							+ "</td>");
					out.println("<td>" + totalizador.getNic() + "</td>");
					out.println("<td>" + totalizador.getMedidor() + "</td>");
					out.println("<td>" + totalizador.getMarca() + "</td>");
					out.println("<td>" + totalizador.getNis_rad() + "</td>");
					out.println("<td>" + totalizador.getLatitud() + "</td>");
					out.println("<td>" + totalizador.getLongitud() + "</td>");
					out.println("<td>");
					out.print("<a href=\"mod_totalizador.jsp?menu=3&codigo="
							+ totalizador.getId()
							+ "\">Modificar</a>     <a href=\"javascript:remove('"
							+ totalizador.getId() + "')\">Eliminar</a>");
					out.println("</td>");
					out.println("</tr>");
					fila++;
				}
				out.println("<tr>");
				out.println("<td colspan='8'>Total Totalizadores: "
						+ totalizadores.size() + "</td>");
				out.println("</tr>");
				out.println("</table>");

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print(e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}
			/* Fin operacion listar departamentos */

		}

		if (operacion.equals("remove")) {
			try {
				conexion = new db();
				String key = (String) request.getParameter("key");
				ManejadorTotalizador MT = new ManejadorTotalizador(conexion);
				if (MT.existId(key)) {
					if (MT.remove(key)) {
						out.print("OK");
					} else {
						out.print("Error al procesar la solicitud");
					}

				} else {
					out.print("Id Totaizador no existe: " + key);
				}

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				out.print(e.getMessage());
			} finally {
				if (conexion != null) {
					try {
						conexion.Close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						out.print(e.getMessage());
					}
				}
			}
		}

		out.close();
	}
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.ProcesarPeticion(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.ProcesarPeticion(request, response);
	}

}
